\documentclass[tikz,10pt,border=10pt]{standalone}
\usepackage{textcomp}
\usepackage{xcolor}
\usetikzlibrary{shapes,arrows}
\begin{document}
\tikzset{%
  state/.style    = {draw, thick, rectangle, node distance = 6cm}
}
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{tikzpicture}[auto, thick, node distance=2cm, >=triangle 45]

\draw (0,0) -- (6,0) -- (6,8) -- (0,8) -- (0,0);

\node (clientB) [draw] at (3,1) {\textsc{Client 'B'}};

\node (conn123a) [draw] at (3,2) {\textsc{Conn '123a'}};

\node (chan0x1a) [draw] at (3,3) {\textsc{Port '1', Chan '0x1a'}};
\node (chan0x2a) [draw] at (3,4) {\textsc{Port '2', Chan '0x2a'}};
\node (chan0x3a) [draw] at (3,5) {\textsc{Port '3', Chan '0x3a'}};
\node (chan0x4a) [draw] at (3,6) {\textsc{Port '4', Chan '0x4a'}};

\draw[arrow, bend right] (chan0x1a.west) to (conn123a.west);
\draw[arrow, bend right] (chan0x2a.west) to (conn123a.west);
\draw[arrow, bend right] (chan0x3a.west) to (conn123a.west);
\draw[arrow, bend right] (chan0x4a.west) to (conn123a.west);

\draw (12,0) -- (18,0) -- (18,8) -- (12,8) -- (12,0);

\node (clientA) [draw] at (15,1) {\textsc{Client 'A'}};

\node (conn123b) [draw] at (15,2) {\textsc{Conn '123b'}};

\node (chan0x1b) [draw] at (15,3) {\textsc{Port '5', Chan '0x1b'}};
\node (chan0x2b) [draw] at (15,4) {\textsc{Port '6', Chan '0x2b'}};
\node (chan0x3b) [draw] at (15,5) {\textsc{Port '7', Chan '0x3b'}};
\node (chan0x4b) [draw] at (15,6) {\textsc{Port '8', Chan '0x4b'}};

\draw[arrow, bend left] (chan0x1b.east) to (conn123b.east);
\draw[arrow, bend left] (chan0x2b.east) to (conn123b.east);
\draw[arrow, bend left] (chan0x3b.east) to (conn123b.east);
\draw[arrow, bend left] (chan0x4b.east) to (conn123b.east);

\draw[arrow] (conn123a) -- (conn123b);
\draw[arrow] (conn123b) -- node[anchor=south] {\textsc{Connection Handshake (once)}} (conn123a);

\draw[arrow] (conn123a) -- node[anchor=east] {\textsc{Verification}} (clientB);
\draw[arrow] (conn123b) -- node[anchor=west] {\textsc{Verification}} (clientA);

\draw[arrow] (10,1) -- node[anchor=south east] {\textsc{Headers from 'A'}} (clientA);
\draw[arrow] (8,1) -- node[anchor=south west] {\textsc{Headers from 'B'}} (clientB);

\draw[arrow] (chan0x1b) -- (chan0x1a);
\draw[arrow] (chan0x1a) -- node[anchor=south] {\textsc{Channel Handshake (once), packets (many)}} (chan0x1b);

\draw[arrow] (chan0x2b) -- (chan0x2a);
\draw[arrow] (chan0x2a) -- node[anchor=south] {\textsc{Channel Handshake (once), packets (many)}} (chan0x2b);

\draw[arrow] (chan0x3b) -- (chan0x3a);
\draw[arrow] (chan0x3a) -- node[anchor=south] {\textsc{Channel Handshake (once), packets (many)}} (chan0x3b);

\draw[arrow] (chan0x4b) -- (chan0x4a);
\draw[arrow] (chan0x4a) -- node[anchor=south] {\textsc{Channel Handshake (once), packets (many)}} (chan0x4b);

\end{tikzpicture}
\end{document}
